#ifndef _WRITE_LUA_H_
#define _WRITE_LUA_H_

#include <string>
#include "math/vec4.h"
#include "math/vec3.h"
#include "math/vec2.h"
#include "math/spline2d.h"
#include "util/file_io.h"
namespace LuaPlus
{
    class LuaObject;
}

namespace script 
{

class WriteLua
{
public:
			WriteLua();
			~WriteLua();
	bool	Open(const std::string& Name);
	void	OpenMemory();

	void	Write(const char*  _Msg, ...);
	void	WriteNL(const char*  _Msg, ...);

	void	Indent();
	void	Exdent();

	void	StartTable(const std::string& Name = "");
	void	CloseTable(bool AddComma= true);
		
	void	WritePair(const std::string& Name, const std::wstring& Data);
	void	WritePair(const std::string& Name, const std::string& Data);
//	void	WritePair(const std::string& Name, bool Data);
	void	WritePair(const std::string& Name, int Data);
	void	WritePair(const std::string& Name, float Data);
	void	WritePair(const std::string& Name, const math::Vec2& Data);
	void	WritePair(const std::string& Name, const math::Vec3& Data);
	void	WritePair(const std::string& Name, const math::Vec4& Data);
	void	WritePair(const std::string& Name, const math::Spline2D& Data);

	static std::string	SanitizeString(const std::string& In);

	std::string	GetTab();
	util::AbstractFile*	GetFile() { return m_pFile; };
private:
	util::AbstractFile*	m_pFile;
	int					m_TabC;
};

}

#endif // _WRITE_LUA_H_